package Module01;

import java.util.Arrays;
import java.util.Scanner;

/*
 * 实现数组扩容。自定义数组长度（用户指定），扩容规则：当已存储元素数量达到
 * 总容量的 80%时，扩容到原容量的1.5 倍。 例如，原容量是 10，当输入第 8个
 * 元素时，数组进行扩容，容量从 10 变 15
 * 
 * */
public class HomeWorkTest02 {

	public static void main(String[] args) {
		//1.指定用户输入数组的长度，并使用变量记录
		System.out.println("请输入初始的数组元素个数：");
		Scanner sc = new Scanner(System.in);
		int num=sc.nextInt();
		//2.声明一个用户指定长度的数组，并初始化
		int[] arr=new int[num];
		System.out.print("请向数组中添加元素：");
		int i=0;
		while (true) {
			arr[i++]=sc.nextInt();
			//3.如果添加的元素大于80%，
			if ((i)/(num*1.0)>=0.8) {
				//System.out.println("大于80%="+((i)/(num*1.0)>=0.8));
				//4.则扩容到原容量的1.5 倍，并创建一个扩容后的新数组
				int[] arr_new= new int[(int)(num*1.5)];
				//System.out.println("新数组的长度："+arr_new.length);
				//5.将原数据搬移到新数组中去
				for (int j = 0; j < arr.length; j++) {
					arr_new[j]=arr[j];
				}
				//6.将原栈区数组指向扩容后的新数组中
				arr=arr_new;
				//7.刷新数组的长度
				num=arr.length;
				//8.打印最终结果
				System.out.print("扩容后的数组元素有："+Arrays.toString(arr));
			}
			
		}
		
	}

}
